Antecedentes anteproyecto DS38El presente analisis tiene por objetivo responder la pregunta:
¿Cual es la variabilidad maxima y promedio de los datos medidos en un mismo punto geografico a lo largo del tiempo?
Para aclarar esta duda, se toma como base la información recopilada en el estudio AA19055 - Antecedentes anteproyecto DS38
En particular, se toman los antecedentes recopilados en la actividad X, en la que se analizaron XX proyectos ingresado al SEIA e informes de seguimiento ambiental declarados a la Superintendencia de Medio Ambiente (SMA) en el Sistema Nacional de Información de Fiscalización Ambiental (SNIFA).
Para este analisis, se consideraran los distintos proyectos recopilados y los registros de Ruido de Fondo declarados en cada punto en cuestion.
De este modo, es posible encontrar mediciones en un mismo lugar, medidos en distintos momentos y bajo distintas condiciones. De estos valores, se tomaran los valores máximos y mínimos y se calculara el rango en decibeles
Donde:
Esta información es separada en Periodo diurno y nocturno de acuerdo a lo declarado en los documentos de origen.
# Librerias
import pandas as pd
import plotly.express as px
import numpy as np
# Leemos
df = pd.read_excel(r'AA19055-Anexo N°4_1-VF - Analisis v1-Rural-RF.xlsx', sheet_name = "Matriz completa")
#display(df)
# Convertimos a numero columnas especificas y limpiamos columna npsdba
df[["nproy", "npsdba", "receptor"]] = df[["nproy", "npsdba", "receptor"]].apply(pd.to_numeric).dropna(subset=["npsdba"])
# Ordenamos
df = df.sort_values(by=["nproy", "receptor"])
# Calculo de variabilidad para todos los datos
estadisticas = df.groupby([df.nproy, df.receptor, df.periodo]).agg({'npsdba': ['count']}).reset_index().copy(deep=True)
# Se eliminan los receptores que tengan solo una medicion
eliminar=estadisticas[estadisticas['npsdba']['count']<2]
for i, fila in eliminar.iterrows():
df=df.drop(df[(df['nproy'] == int(fila['nproy'])) & (df['receptor'] == int(fila['receptor']))].index)
# Mejoramos textos
reemp = {'empresa':['C_Acustica','C_Ambiental','PNatural','C_Ingenieria','No_indica'],'desc':['Consultor acústico','Consultor ambiental','Persona natural','Consultor en ingeniería','No indica']}
reemp = dict(zip(reemp['empresa'],reemp['desc']))
df['empresa'] = df['empresa'].replace(reemp, regex=True)
#Separamos Diurno y Nocturno
df_diurno = df.query('periodo == "Diurno"')
estadisticas_diurno = df_diurno.groupby([df_diurno.nproy, df_diurno.receptor, df_diurno.periodo]).agg({'npsdba': [np.ptp]}).reset_index()
df_nocturno = df.query('periodo == "Nocturno"')
estadisticas_nocturno = df_nocturno.groupby([df_nocturno.nproy, df_nocturno.receptor, df_nocturno.periodo]).agg({'npsdba': [np.ptp]}).reset_index()
#Casos especiales, los que presentan mayor vaiabilidad
df_diurno_ce = df_diurno.query('nproy == 25')
estadisticas_diurno_ce = df_diurno_ce.groupby([df_diurno_ce.nproy, df_diurno_ce.receptor, df_diurno_ce.periodo]).agg({'npsdba': [np.ptp]}).reset_index()
df_nocturno_ce = df_nocturno.query('nproy == 18')
estadisticas_nocturno_ce = df_nocturno_ce.groupby([df_nocturno_ce.nproy, df_nocturno_ce.receptor, df_nocturno_ce.periodo]).agg({'npsdba': [np.ptp]}).reset_index()
Los siguientes datos corresponden al periodo diurno de medición.
# Periodo Diurno
from plotly.subplots import make_subplots
import plotly.graph_objects as go
print("Variabilidad máxima, periodo diurno: "+str(round(estadisticas_diurno.npsdba['ptp'].max(),1)))
print("Variabilidad promedio, periodo diurno: "+str(round(estadisticas_diurno.npsdba['ptp'].mean(),1)))
fig = make_subplots(rows=2,cols=1,subplot_titles=('Ruido de fondo, periodo diurno', 'Variabilidad, periodo diurno'))
fig.add_trace(go.Scatter(name='RF diurno',x=[df_diurno.nproy, df_diurno.receptor],y=df_diurno.npsdba,
mode="markers",text=df_diurno.empresa+'<br> Periodo: '+df_diurno.periodo,hovertemplate = 'RF: %{y} dBA<br> %{text}',
marker=dict(color=df_diurno.empresa.astype('category').cat.codes),marker_size=5,marker_symbol=3,marker_line_width=0.3,marker_line_color="black"),row=1,col=1)
fig.add_trace(go.Bar(name='Variabilidad diurna',x=[estadisticas_diurno.nproy, estadisticas_diurno.receptor],y=estadisticas_diurno.npsdba['ptp']),row=2,col=1)
fig.update_layout(height=600)
fig.update_xaxes(tickfont=dict(size=8), title_font=dict(size=8), showspikes=True)
fig.update_yaxes(showspikes=True)
fig.show()
Variabilidad máxima, periodo diurno: 26.0 Variabilidad promedio, periodo diurno: 10.7
A continuacion se presentan los datos del periodo nocturno de medición.
# Periodo Nocturno
from plotly.subplots import make_subplots
import plotly.graph_objects as go
print("Variabilidad máxima, periodo nocturno: "+str(round(estadisticas_nocturno.npsdba['ptp'].max(),1)))
print("Variabilidad promedio, periodo nocturno: "+str(round(estadisticas_nocturno.npsdba['ptp'].mean(),1)))
fig = make_subplots(rows=2,cols=1,subplot_titles=('Ruido de Fondo, periodo nocturno', 'Variabilidad, periodo nocturno'))
fig.add_trace(go.Scatter(name='RF nocturno',x=[df_nocturno.nproy, df_nocturno.receptor],y=df_nocturno.npsdba,
mode="markers",text=df_nocturno.empresa+'<br> Periodo: '+df_nocturno.periodo,hovertemplate = 'RF: %{y} dBA<br> %{text}',
marker=dict(color=df_nocturno.empresa.astype('category').cat.codes),marker_size=5,marker_symbol=3,marker_line_width=0.3,marker_line_color="black"),row=1,col=1)
fig.add_trace(go.Bar(name='Variabilidad nocturna',x=[estadisticas_nocturno.nproy, estadisticas_nocturno.receptor],y=estadisticas_nocturno.npsdba['ptp']),row=2,col=1)
fig.update_layout(height=600)
fig.update_xaxes(tickfont=dict(size=8), title_font=dict(size=8), showspikes=True)
fig.update_yaxes(showspikes=True)
fig.show()
Variabilidad máxima, periodo nocturno: 26.0 Variabilidad promedio, periodo nocturno: 10.6
# Periodo Diurno, caso especial
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(rows=2,cols=1,subplot_titles=('Ruido de fondo, periodo diurno, caso especial', 'Variabilidad, periodo diurno, caso especial'))
fig.add_trace(go.Scatter(name='RF',x=[df_diurno_ce.nproy, df_diurno_ce.receptor],y=df_diurno_ce.npsdba,
mode="markers",text=df_diurno_ce.empresa+'<br> Periodo: '+df_diurno_ce.periodo,hovertemplate = 'RF: %{y} dBA<br> %{text}',
marker=dict(color=df_diurno_ce.empresa.astype('category').cat.codes),marker_size=5,marker_symbol=3,marker_line_width=0.3,marker_line_color="black"),row=1,col=1)
fig.add_trace(go.Bar(name='Variabilidad',x=[estadisticas_diurno_ce.nproy, estadisticas_diurno_ce.receptor],y=estadisticas_diurno_ce.npsdba['ptp']),row=2,col=1)
fig.update_layout(height=600)
fig.update_xaxes(tickfont=dict(size=8), title_font=dict(size=8), showspikes=True)
fig.update_yaxes(showspikes=True)
fig.show()
# Periodo Nocturno, caso especial
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(rows=2,cols=1,subplot_titles=('Ruido de Fondo, periodo nocturno, caso especial', 'Variabilidad, periodo nocturno,caso especial'))
fig.add_trace(go.Scatter(name='RF',x=[df_nocturno_ce.nproy, df_nocturno_ce.receptor],y=df_nocturno_ce.npsdba,
mode="markers",text=df_nocturno_ce.empresa+'<br> Periodo: '+df_nocturno_ce.periodo,hovertemplate = 'RF: %{y} dBA<br> %{text}',
marker=dict(color=df_nocturno_ce.empresa.astype('category').cat.codes),marker_size=5,marker_symbol=3,marker_line_width=0.3,marker_line_color="black"),row=1,col=1)
fig.add_trace(go.Bar(name='Variabilidad',x=[estadisticas_nocturno_ce.nproy, estadisticas_nocturno_ce.receptor],y=estadisticas_nocturno_ce.npsdba['ptp'],),row=2,col=1)
fig.update_layout(height=600)
fig.update_xaxes(tickfont=dict(size=8), title_font=dict(size=8), showspikes=True)
fig.update_yaxes(showspikes=True)
fig.show()